home *** CD-ROM | disk | FTP | other *** search
/ User's Choice Windows CD / User's Choice Windows CD (CMS Software)(1993).iso / windows5 / wintidy.zip / WINPAS.ZIP / WINTIDY.PAS < prev    next >
Pascal/Delphi Source File  |  1992-11-01  |  5KB  |  180 lines

  1. PROGRAM WinTidy;
  2. USES WinTypes, WinProcs, Strings, Win31, WinDOS, TidyWinA, TidyWinB,
  3.   TidyWinC, {$IFDEF VER70} ODialogs, OWindows, Objects;
  4. {$ELSE} WObjects; {$ENDIF}
  5. {$D Copyright (c) 1992 by Neil J. Rubenking}
  6. {$R WINTIDY}
  7. {$I WINTIDY.INC}
  8. CONST AppName : PChar = 'WinTidy';
  9. TYPE
  10.   TMyApplication = OBJECT(TApplication)
  11.     PROCEDURE InitMainWindow; virtual;
  12.   END;
  13.  
  14.   PTidyWindow = ^TTidyWindow;
  15.   TTidyWindow = OBJECT(TTidyWindowC)
  16.     CONSTRUCTOR Init(AParent : PWindowsObject; AName : PChar);
  17.     DESTRUCTOR Done; Virtual;
  18.     PROCEDURE SetUpWindow; Virtual;
  19.     FUNCTION GetClassName : PChar; Virtual;
  20.     PROCEDURE GetWindowClass(var AWndClass: TWndClass); Virtual;
  21.     PROCEDURE wmCommand(VAR Msg : TMessage); Virtual
  22.       wm_First + wm_Command;
  23.   END;
  24.  
  25.   PBitStatic = ^TBitStatic;
  26.   TBitStatic = OBJECT(TStatic)
  27.     PROCEDURE Paint(pDC : hDC; VAR PS : TPaintStruct); Virtual;
  28.     PROCEDURE wmPaint(VAR Msg : TMessage); Virtual
  29.       wm_First + wm_Paint;
  30.   END;
  31.  
  32.   PROCEDURE TBitStatic.Paint(pDC : hDC; VAR PS :
  33.     TPaintStruct);
  34.   VAR
  35.     hb, ob : hBitMap;
  36.     bm     : tBitMap;
  37.     bitsDC : hDC;
  38.   BEGIN
  39.     BitsDC := CreateCompatibleDC(pDC);
  40.     hb := LoadBitMap(hInstance, appName);
  41.     GetObject(hb, SizeOf(tBitMap), @bm);
  42.     ob := SelectObject(BitsDC, hb);
  43.     BitBlt(pDC, 0, 0, bm.bmWidth, bm.bmHeight,
  44.       bitsDC, 0, 0, SrcCopy);
  45.     SelectObject(BitsDC, ob);
  46.     DeleteDC(bitsDC);
  47.     DeleteObject(hb);
  48.   END;
  49.  
  50.   PROCEDURE TBitStatic.wmPaint(VAR Msg : TMessage);
  51.   BEGIN TWindow.wmPaint(Msg); END;
  52.  
  53.   CONSTRUCTOR TTidyWindow.Init(AParent : PWindowsObject;
  54.     AName : PChar);
  55.   VAR Ps : PStatic;
  56.   BEGIN
  57.     TTidyWindowC.Init(AParent, AName);
  58.     IniName := NIL;
  59.     PS := New(PBitStatic, InitResource(@Self, id_wtBitmap, 0));
  60.   END;
  61.  
  62.   PROCEDURE TTidyWindow.SetUpWindow;
  63.   VAR
  64.     ArgBuff  : ARRAY[0..fsPathName]  OF Char;
  65.     DirName  : ARRAY[0..fsDirectory] OF Char;
  66.     ProgName : ARRAY[0..fsFileName]  OF Char;
  67.     ProgExt  : ARRAY[0..fsExtension] OF Char;
  68.  
  69.     FUNCTION GetFileArg : Boolean;
  70.     VAR ArgC : Word;
  71.     BEGIN
  72.       GetFileArg := FALSE;
  73.       ArgC := GetArgCount;
  74.       IF ArgC > 0 THEN
  75.         BEGIN
  76.           GetArgStr(ArgBuff, 1, fsPathName);
  77.           IF StrLIComp(ArgBuff, '/Q', 2) = 0 THEN
  78.             BEGIN
  79.               Quiet := TRUE;
  80.               IF ArgC > 1 THEN
  81.                 BEGIN
  82.                   GetArgStr(ArgBuff, 2, fsPathName);
  83.                   GetFileArg := TRUE;
  84.                 END;
  85.             END
  86.           ELSE
  87.             BEGIN
  88.               GetFileArg := TRUE;
  89.               IF ArgC > 1 THEN
  90.                 BEGIN
  91.                   GetArgStr(DirName, 2, fsDirectory);
  92.                   Quiet := StrLIComp(DirName, '/Q', 2) = 0;
  93.                 END;
  94.             END;
  95.         END;
  96.     END;
  97.  
  98.   BEGIN
  99.     TTidyWindowC.SetUpWindow;
  100.     IF PMWindow = 0 THEN
  101.       BEGIN
  102.         MessageBeep(mb_IconStop);
  103.         MessageBox(hWindow, 'Unable to locate Program Manager',
  104.           'WINTIDY ERROR', mb_Ok + mb_IconStop);
  105.         cmdShow := sw_Hide;
  106.         PostQuitMessage(hWindow);
  107.       END
  108.     ELSE
  109.       BEGIN
  110.         IF GetFileArg THEN
  111.           BEGIN
  112.             FileSplit(ArgBuff, DirName, ProgName, ProgExt);
  113.             StrCopy(ArgBuff, ProgName);
  114.             StrCat(ArgBuff, '.INI');
  115.             StrUpper(ArgBuff);
  116.             StrCopy(DirName, 'Save/Restore using ');
  117.             StrCat(DirName, ArgBuff);
  118.             StrCat(DirName, '?'#13'(NO means use WINTIDY.INI)');
  119.             IF NOT Quiet THEN MessageBeep(mb_IconQuestion);
  120.             IF MessageBox(hWindow, DirName, 'WINTIDY',
  121.               mb_YesNo + mb_IconQuestion) = idYES THEN
  122.                 BEGIN
  123.                   IniName := StrNew(ArgBuff);
  124.                   StrCopy(DirName, 'WINTIDY - ');
  125.                   StrCat(DirName, ArgBuff);
  126.                   SetWindowText(hWindow, DirName);
  127.                 END;
  128.           END;
  129.         IF IniName = NIL THEN IniName := StrNew('WINTIDY.INI');
  130.       END;
  131.   END;
  132.  
  133.   DESTRUCTOR TTidyWindow.Done;
  134.   BEGIN
  135.     StrDispose(IniName);
  136.     TTidyWindowC.Done;
  137.   END;
  138.  
  139.   FUNCTION TTidyWindow.GetClassName;
  140.   BEGIN
  141.     GetClassName := AppName;
  142.   END;
  143.  
  144.   PROCEDURE TTidyWindow.GetWindowClass(VAR AWndClass :
  145.     TWndClass);
  146.   BEGIN
  147.     TTidyWindowC.GetWindowClass(AWndClass);
  148.     AWndClass.hIcon := LoadIcon(HInstance, AppName);
  149.   END;
  150.  
  151.   PROCEDURE TTidyWindow.wmCommand(VAR Msg : TMessage);
  152.   BEGIN
  153.     IF Msg.lParamLo = 0 THEN
  154.       BEGIN
  155.         CASE Msg.wParam OF
  156.           id_ArrIcons : ArrangeAll;
  157.           id_SaveLay  : SaveLayout;
  158.           id_RestLay  : RestoreLayout;
  159.           id_HowToUse : Application^.ExecDialog(New(PDialog,
  160.                           Init(@Self, 'TidyHelp')));
  161.           id_AboutIt  : Application^.ExecDialog(New(PDialog,
  162.                           Init(@Self, 'TidyAbout')));
  163.           ELSE TTidyWindowC.wmCommand(Msg);
  164.         END;
  165.       END
  166.     ELSE TTidyWindowC.wmCommand(Msg);
  167.   END;
  168.  
  169.   PROCEDURE TMyApplication.InitMainWindow;
  170.   BEGIN
  171.     MainWindow := New(PTidyWindow, Init(Nil, AppName));
  172.   END;
  173.  
  174. VAR MyApp: TMyApplication;
  175. BEGIN
  176.   MyApp.Init(AppName);
  177.   MyApp.Run;
  178.   MyApp.Done;
  179. END.
  180.